package com.wantup.demo03xd.part07;

import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @author Zhaoluowei
 * @version 1.0
 * @date 2019/7/4 13:52
 */
public class CopyOnWriteListDemo {

    public static void main(String[] args) {
        //不会出现 多个线程 都在remove
        CopyOnWriteArrayList<String> writeArrayList = new CopyOnWriteArrayList<>();
        for (int i = 0; i < 1000; i++) {
            writeArrayList.add("dd_" + i);
        }
        System.out.println(writeArrayList.size());

//        Iterator<String> iterator = writeArrayList.iterator();
//        while (iterator.hasNext()) {
//            String next = iterator.next();
//            System.out.println(next);
//            if ("dd_10".equals(next)) {
//                //不支持这个操作 调用移除的方法就会出现异常
//                iterator.remove();
//            }
//        }

        //遍历操作
//        writeArrayList.forEach(e -> {
//            if ("dd_10".equals(e)) {
//                writeArrayList.remove(e);
//            }
//        });
//        //遍历操作
//        writeArrayList.forEach(e -> {
//            System.out.println(e);
//        });


        for (int i = 0; i < 4; i++) {
            new Thread(() -> {
                writeArrayList.forEach(e -> {
                    if ("dd_10".equals(e)) {
                        writeArrayList.remove(e);
                    }
                });
            }).start();
        }


    }


}
